HTTP 状态码
2XX 成功
- 200 OK,表示从客户端发来的请求在服务器端被正确处理
- 204 No content,表示请求成功,但响应报文不含实体的主体部分
- 206 Partial Content,表示客户端进行了范围请求。响应报文包含由 Content-Range 指定范围的实体内容
3XX 重定向
- 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
- 302 found,临时性重定向,表示资源临时被分配了新的 URL
- 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况。如果请求报文首部包含一些条件,例如:If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。
4XX 客户端错误
- 400 bad request,请求报文存在语法错误
- 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息,未通过身份鉴权
- 403 forbidden,表示对请求资源的访问被服务器拒绝, 通过身份鉴权,但没有资源请求权限。
- 404 not found,表示在服务器上没有找到请求的资源
5XX 服务器错误
- 500 internal sever error,服务器正在执行请求时发生错误。
- 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
302 重定向
简要介绍一次 302 的过程
用户请求一个 url,服务器处理这个 url,设置这个 url 需要重定向,返回用户一个 302 响应,并在 http 头部设置 location 字段为新的地址, 浏览器得到这个响应,根据 location 中新的地址重新发起一次请求。
请解释 HTTP status 301 与 302 的区别?
301 Moved Permanently 请求的网页已永久移动到新位置。 302 Found 临时性重定向
共同点:
301 和 302 状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的 URL 地址,这个地址可以从响应的 Location 首部中获取
区别:
301 表示旧地址 A 的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302 表示旧地址 A 的资源还在(仍然可以访问),这个重定向只是临时地从旧地址 A 跳转到地址 B,搜索引擎会抓取新的内容而保存旧的网址。
使用 301 跳转的场景:
- 域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
- 在搜索引擎的搜索结果中出现了不带 www 的域名,而带 www 的域名却没有收录,这个时候可以用 301 重定向来告诉搜索引擎我们目标的域名是哪一个。
- 空间服务器不稳定,换空间的时候。
使用 302 跳转的场景:
- 尽量使用 301 跳转!避免网址劫持